package com.example.system.information.service;

import android.app.Service;
import android.content.Intent;
import android.os.Handler;
import android.os.IBinder;
import android.util.Log;

import com.example.system.information.CrashApplication;
import com.example.system.information.bean.DeviceInfoRecord;
import com.example.system.information.mq.MQUtils;
import com.example.system.information.mq.MqttUtils;
import com.example.system.information.mq.SystemInfoUtils;
import com.example.system.information.utils.JsontoUtils;
import com.google.gson.Gson;

/**
 * MQ推送服务，负责定时获取系统信息并通过MQUtils发送
 */
public class MQPushService extends Service {
    private static final String TAG = "MQPushService";
    private static final long SEND_INTERVAL = 10 * 1000; // 发送间隔（毫秒）
    private Handler handler;
    private Runnable sendRunnable;

    @Override
    public void onCreate() {
        super.onCreate();
        Log.d(TAG, "服务创建，初始化定时任务");
        handler = new Handler();

        // 定义循环执行的任务
        sendRunnable = new Runnable() {
            @Override
            public void run() {
                sendSystemInfoToMQ();
                // 任务执行完成后，延迟再次执行
                handler.postDelayed(this, SEND_INTERVAL);
            }
        };
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d(TAG, "服务启动，开始定时发送系统信息");
        // 立即执行一次
        handler.post(sendRunnable);
        return START_STICKY;
    }

    /**
     * 获取系统信息并通过MQUtils发送
     */
    private void sendSystemInfoToMQ() {
        try {
            /**
             *  1. 获取系统信息
             */
            DeviceInfoRecord record = SystemInfoUtils.getSystemInfo(this);
            /**
             *  2. 通过MQ工具类发送
             */
            //用mq队列推送
            MQUtils.pushSystemInfo(record);
            //用mqtt推送
//            MqttUtils.publishToTopic(CrashApplication.getContext(), record);
            Log.d(TAG, "系统信息已提交至MQ发送队列");
        } catch (Exception e) {
            Log.e(TAG, "获取或发送系统信息失败: " + e.getMessage());
            e.printStackTrace();
        }
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "服务销毁，停止定时任务");
        // 移除所有待执行的任务，避免内存泄漏
        if (handler != null && sendRunnable != null) {
            handler.removeCallbacks(sendRunnable);
        }
        // 关闭MQ工具类的线程池
        MQUtils.shutdown();
    }

    @Override
    public IBinder onBind(Intent intent) {
        // 无需绑定服务，返回null
        return null;
    }
}
